/*
 * © 2024 huayunliufeng保留所有权利, 依据MIT许可证发布。
 * 请勿更改或删除版权声明或此文件头。
 * 此代码是免费软件, 您可以重新分发和/或修改它。
 * 开源是希望它有用, 但不对代码做任何保证。
 * 如有疑问请联系: huayunliufeng@163.com
 */

package io.github.huayunliufeng.common.annotation;

import java.lang.annotation.*;

/**
 * @author huayunliufeng
 * @date_time 2024/3/23 20:49
 * @desc 指定获取值的方法名称
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
@Documented
public @interface ValueFromMethod {
    /**
     * 自定义方法名称
     *
     * @return 自定义方法名称
     */
    String value();

    /**
     * 入参数据类型, 只支持8个基本数据类型个字符串, 顺序和方法入参顺序保持一致
     *
     * @return 入参数据类型
     */
    Class<?>[] paramTypes() default {};

    /**
     * 入参数据组个数
     *
     * @return 入参数据组个数
     */
    int groupNumber() default 0;

    boolean[] booleanValues() default {};

    char[] charValues() default {};

    byte[] byteValues() default {};

    short[] shortValues() default {};

    int[] intValues() default {};

    long[] longValues() default {};

    double[] doubleValues() default {};

    float[] floatValues() default {};

    String[] stringValues() default {};
}
